package cn.lg.soar.boot.fc.service;

import cn.lg.soar.boot.fc.entity.vo.CampusEasyVo;
import cn.lg.soar.boot.fc.entity.vo.CampusVo;
import cn.lg.soar.boot.fc.entity.vo.FcTreeVo;
import cn.lg.soar.common.model.HttpResult;
import cn.lg.soar.common.model.PageQuery;
import cn.lg.soar.common.model.PageResult;
import cn.lg.soar.database.base.service.IBaseService;
import cn.lg.soar.boot.fc.entity.Campus;
import cn.lg.soar.database.query.QueryParams;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 校区表
 * @author lhp
 * @since 2024-12-25
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface CampusService extends IBaseService<Campus> {

    /**
     * 获取全部校区
     * @return
     */
    List<CampusVo> getListVo();

    /**
     * 通过id 获取 模型
     * @param id
     * @return
     */
    Campus getData(Long id);

    /**
     * 通过id获取 vo数据
     * @param id
     * @return
     */
    CampusVo getVoData (Long id);

    /**
     * 获取简单的 模型数据
     * @param id
     * @return
     */
    CampusEasyVo getEasyVoData(Long id);

    /**
     * 获取tree
     * @param pageQuery
     * @return
     */
    PageResult<FcTreeVo> queryResultVo (PageQuery pageQuery, QueryParams params);

    /**
     * 获取tree
     * @param pageQuery
     * @return
     */
    PageResult<FcTreeVo> queryFirstTreeVo (PageQuery pageQuery, QueryParams params);


    /**
     * 获取简单的tree
     * @param pageQuery
     * @return
     */
    PageResult<JSONObject> queryResultEasyVo (PageQuery pageQuery, QueryParams params);

    /**
     * 通过 name 获取
     * @param name
     * @return
     */
    Campus getByName (String name);

    /**
     * 导出表格
     * @param filename
     * @param params
     * @param resp
     */
    void exportExcel (String filename, QueryParams params, HttpServletResponse resp);

    /**
     * 导入房间信息
     * @param files
     * @return
     */
    HttpResult<Void> importExcel (MultipartFile files);

    /**
     * 拖拽排序
     */
    HttpResult<Serializable> updateSort(List<Map<String, Integer>> sortedData);
}
